package tests;

import static org.junit.Assert.*;

import org.junit.Test;

import excepciones.ExcepcionCantidadDeTarjetasAmarillasIncorrecta;
import excepciones.ExcepcionNumeroDeFechaImposible;

import programa.Defensor;

public class TestsJugadorConVayaInvicta {
	
	@Test
	public void testSiElJugadorObteneVayaInvictaEnUnaFechaDeberiaAsignarseCorrectamente() throws ExcepcionNumeroDeFechaImposible{

		String unNombre = "Daniel Diaz";
			
		Defensor unJugador = new Defensor(unNombre, 7000000);
		
		for(int i = 1; i < 20; i++){
				
			unJugador.obtuvoVayaInvictaEnLaFecha(i);
				
			assertTrue(unJugador.tuvoVayaInvictaEnLaFecha(i));
			
		}
		
	}
	
	//****************************************************************************
	
	@Test
	public void testElJugadorNoDeberiaTenerVayaInvictaEnNingunaFechaAlCrearlo() throws ExcepcionNumeroDeFechaImposible{

		String unNombre = "Daniel Diaz";
			
		Defensor unJugador = new Defensor(unNombre, 7000000);
			
		for(int i = 1; i < 20; i++){
				
			assertFalse(unJugador.tuvoVayaInvictaEnLaFecha(i));
				
		}
			
	}
	
	//****************************************************************************	
	
	@Test
	public void testSiUnDefensorHaceUnGolEnContraDeberiaRestar3PuntosExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Claudio Perez", 1000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.hizoCantidadDeGolesEnContraEnLaFecha(1, i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == -3);
			
		}
		
	}
	
	//*************************************************************************
	
	@Test
	public void testSiUnDefensorHaceUnGolDeJugadaAfavorDeberiaSumar5PuntosExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Claudio Perez", 1000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.hizoCantidadDeGolesDeJugadaAfavorEnLaFecha(1, i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == 5);
			
		}
		
	}
	
	//*************************************************************************
	
	@Test
	public void testSiUnDefensorHaceUnGolDePenalDeberiaSumar2PuntosExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Claudio Perez", 1000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.hizoCantidadDeGolesDePenalEnLaFecha(1, i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == 2);
			
		}
		
	}
	
	//*************************************************************************
	
	@Test
	public void testSiUnDefensorObtuvoVayaInvictaDeberiaSumar1PuntoExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Daniel Diaz", 5000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.obtuvoVayaInvictaEnLaFecha(i);
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == 1);
			
		}
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiUnDefensorEstaAmonestadoDeberiaRestar1PuntoExtraPorFecha() throws ExcepcionCantidadDeTarjetasAmarillasIncorrecta, ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Daniel Diaz", 5000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.obtuvoCantidadDeTarjetasAmarillasEnLaFecha(1, i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == -1);
			
		}
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiUnDefensorFueExpulsadoDeberiaRestar2PuntosPorFecha() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Fernando Ortiz", 5000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.salioExpulsadoEnLaFecha(i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == -2);
			
		}
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiUnDefensorSaleFiguraEnUnaFechaDeberiaSumar2PuntosExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Daniel Diaz", 5000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.salioFiguraEnLaFecha(i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == 2);
			
		}
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiUnDefensorSaleChenemigoEnUnaFechaDeberiaRestar2PuntosExtra() throws ExcepcionNumeroDeFechaImposible{
		
		Defensor unDefensor = new Defensor("Daniel Diaz", 5000000);
		
		for(int i = 1; i < 20; i++){
			
			unDefensor.salioChenemigoEnLaFecha(i);
			
		}
		
		for(int i = 1; i < 20; i++){
			
			assertTrue(unDefensor.obtenerPuntajeTotalDeLaFecha(i) == -2);
			
		}
		
	}
	
	//************************************************************************
	
}
